Instalación de SAMBA y Web2Py

Introducción


Reutilizando un viejo Pentium III (con 192MB RAM), he instalado Ubuntu Server 9.04 y Transmission. El equipo se encuentra conectado a internet descargando ficheros. La administración se realiza desde la línea de comandos mediante Putty desde un equipo con Windows XP. La gestión de los torrents enTransmission se realiza vía web.

Para poder transferir los ficheros descargados por Transmission, me había propuesto instalar SAMBA.

Además, quería instalar Web2Py para poder tener disponer de una aplicación web para llevar el control de las facturas de electricidad, gas, agua y de comida de la casa. El poder instalar Web2Py es uno de los factores por los que FreeNAS no cubría mis necesidades. Otro punto en contra de FreeNAS era que, al estar basado en BSD, todavía tenía más problemas que con Ubuntu.

Anteriormente he publicado varios posts sobre las pruebas y los pasos que he seguido para instalar este equipo. Los he reunido todos bajo la etiqueta vectra-net.

Instalación de SAMBA


Nada más sencillo:
sudo apt-get install samba

Configuración de SAMBA


El objetivo de SAMBA en este equipo es poder transferir los ficheros descargados en /srv/public a cualquiera de los equipos de casa de manera sencilla. Por ello, todo el mundo tiene permisos de escritura y lectura sobre esta carpeta. Los permisos los especifiqué después de instalar Transmission mediante chmod a+rw /srv/public.

He seguido las instrucciones del manual Samba para el escenario más sencillo.

Por seguridad, he copiado el archivo de configuración de SAMBA: sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.original

He leído que el tamaño del fichero smb.conf afecta al rendimiento de SAMBA. Aunque no creo que en mi caso sea un problema, he eliminado todo el contenido del fichero para facilitarme la lectura del mismo.

El fichero smb.conf ha quedado reducido a la mínima expresión:
[global]
workgroup = WORKGROUP
security = SHARE
[Public]
path = /srv/public
read only = No
guest ok = Yes
Finalmente, he reiniciado SAMBA:
sudo /etc/init.d/samba restart

Configuración del recurso compartido desde Windows


De vuelta en la máquina con Windows XP, he mapeado la unidad de red siguiendo los siguientes pasos:
  1. Abrir el explorador de Windows (Win+E)
  2. Herramientas -> Conectar a unidad de red...
  3. He seleccionado la unidad P:
  4. En Carpeta, he introducido: \\IP del servidor\public
  5. He marcado la casilla Conectar de nuevo al iniciar sesión
  6. Aceptar
El explorador de Windows ha abierto la carpeta de descargas de Transmission sin problemas. He comprobado que podía crear nuevos ficheros y eliminarlos y me ha dado por satisfecho.

Instalación de Web2py


Ayer estuve peleándome durante horas con la instalación de Web2Py sobre Cherokee. Al final, decidí irme a dormir. Es una técnica que -a mí- me suele funcionar. Y hoy, en menos de media hora, he tenido Web2Py funcionando sobre Cherokee!

Web2py es un framework de desarrollo de aplicaciones web basado en Python con el que he estado aprendiendo en los últimos meses. Como resultado de mis ejercicios, he montado una pequeña aplicación que nos permite controlar los gastos de la casa y controlar el consumo y las facturas de gas, electricidad y agua. Nada espectacular (lo sé ;-) )

Una de las características de Web2Py es que es autocontenido, de manera que la instalación consiste únicamente en bajar el paquete para nuestra plataforma (está disponible también para Mac y para Windows) y descomprimirlo.

Desde la línea de comando: wget http://www.web2py.com/examples/static/web2py_src.zip

Para descomprimirlo utilicé unzip (que resultó que no estaba instalado y tuve que instalar previamente). Tal y como indican en el hilo de instalación, lo descomprimí en /var/web2py.

La primera vez que se ejecuta web2py se descomprimen unas aplicaciones de ejemplo y el entorno administrativo, por lo que el autor del tutorial recomienda arrancarlo y volver a pararlo a continuación.

En la mayor parte de los pasos he seguido las instrucciones de este hilo (web2rokee! web2py + Cherokee HowTo) en el grupo de discusión de Web2py, aunque la instalación de Cherokee, por ejemplo, la he realizado desde los repositorios de Ubuntu.

sudo apt-get install cherokee

La instalación arranca automáticamente el servidor web Cherokee.

La administración de Cherokee se realiza a través de un add-on llamado cherokee-admin basado en web. Por defecto, únicamente podemos administrar el servidor desde el equipo donde se encuentra instalado. Para aquellos que, como yo, no puedan hacerlo desde el servidor, existe la posibilidad de que cherokee-admin escuche las peticiones desde otras IPs. Aunque la manera más segura es mediante un túnel ssh, la más sencilla es arrancar el servidor con el parámetro -b: sudo cherokee-admin -b

cherokee-admin genera una contraseña de un sólo uso para poder acceder al interfaz de adminsitración, que deberemos copiar o apuntar en algún sitio (el nombre de usuario es admin)

Ahora, desde el equipo remoto, abro un navegador e introduzco la URL: http://IP_DEL_SERVIDOR:9090
Introducimos usuario y contraseña y accedemos a la administración web de Cherokee.

Sigo las instrucciones de Phyo Arkar y a continuación creo el script destinado a arrancar web2py. En mi caso, utilizo:
sudo nano /var/web2py/startweb2py.sh

El contenido del archivo son tres líneas:
#!/bin/bash
cd /var/web2py
python /var/web2py/fcgihandler.py &


Nota: Aunque esta información también se encuentra en AlterEgo, prefieron enlazar con el original en Google Groups ya que, por algún motivo, faltan caracteres (como el # inicial, las líneas cd y python se han unido en la misma...)

Una vez hemos creado el script, lo convertimos en ejecutable: sudo chmod a+x /var/web2py/startweb2py.sh

El autor recomienda ejecutar el script a mano, aunque no creo que sea necesario; una vez configurado el servidor web, éste lo arrancará automáticamente cuando sea necesario.

Finalmente nos queda configurar Cherokee para que ejecute web2py.

Creamos un Information Source:
Type: Local Interpreter
Nick: web2py
Connection: /tmp/fcgi.sock
Interpreter: /var/web2py/startweb2py.sh

Una vez compeltados todos los campos, pulsamos el enlace Add new.

A contiuación debemos modificar el comportamiento del virtual server Default.

En las pestañas laterales, pulsamos Virtual Servers. De la lista de servidores virtuales definidos, pulsamos sobre default (si acabamos de instalar Cherokee, dudo de que haya alguno más).

En la pantalla que nos aparece, seleccionamos la sección Behaviour.
Y dentro de esta sección, pulsamos sobre el enlace Default (en la captura ya aparece el resultado final)

En la pantalla que aparece, en la sección Handler, seleccionamos FastCGI del desplegable Handler (por defecto muestra List and Send) y marcamos todas las casillas de Common CGI Options.

Finalmente, seleccionamos web2py del desplegable de Assing Information Sources.
Aunque en el post en Google Groups no lo indica, es necesario guardar la configuración del servidor. Para ello, pulsamos en el botón de la columna izquierda: Save Changes (que también reinicia el servidor de manera que los cambios tengan efecto).

Si todo funciona como debe, deberíamos tener web2py funcionando sin problemas sobre Cherokee.

Problemas


Como indicaba más arriba, ayer estuve peleándome con todo lo anterior sin conseguir hacerlo funcionar... Así que indicaré aquí los problemas que me encontré, por si pueden servir de ayuda para alguien.

Básicamente, encontraba dos tipos de errores: Error 500, error interno del servidor y un error de Web2py, que creaba un fallo de tipo unknown (desconocido).

En ambos casos, al indicar la IP del servidor (puerto 80), se hacía la redirección hacia /welcome/default/index, lo que significaba que web2py estaba funcionando. El hecho de que se generara un error de tipo desconocido, aún con tan poca información, me olía a problemas de permisos.

Curiosamente, la solución la he intuido esta mañana, cuando ya había desistido de instalar web2py sobre Cherokee e iba a darle una oportunidad a Lighttp. Normalmente, los servidores web se ejecutan como otro usuario, por seguridad. Este usuario suele ser www-data.

Buscando información sobre cómo modificar las "credenciales" de Cherokee, he encontrado este apartado en la web oficial del servidor: Server Permissions.
En la instalación por defecto, tanto el usuario como el grupo eran www-data, si no recuerdo mal; dejando los campos en blanco he conseguido que todo funcione, finalmente.

Esto significa, si no me equivoco, que el servidor web se ejecuta con permisos de root, cosa que es desaconsejable. En mi caso, como es una instalación casera, una de las premisas de esta instalación es preferir sencillez antes que seguridad.

Imagino que no debe ser demasiado complicado asignar los permisos adecuados al servidor y a la carpeta de web2py, pero eso lo dejo para una siguiente fase (en la que ya tenga más conocimientos relativos al sistema en sí).

Comentarios